package com.raymond.entity.commons;

import java.util.Objects;

/**
 * desc-公共整型枚举基类
 *
 * @author houmenghe
 * @date 2025/04/21 16:05
 **/
public interface BaseEnum {
    Integer getValue();

    String getDesc();

    /**
     * @param enumClass 枚举类
     * @param value     枚举值
     * @param <E>       e
     * @return 枚举
     */
    static <E extends Enum<?> & BaseEnum> E getEnumByValue(Class<E> enumClass, Integer value) {
        if (!Objects.isNull(value) && enumClass != null) {
            E[] enumConstants = enumClass.getEnumConstants();
            if (enumConstants != null) {
                for (E e : enumConstants) {
                    if (e.getValue().equals(value)) {
                        return e;
                    }
                }
            }
        }
        return null;
    }

    /**
     * 根据value获取desc
     *
     * @param enumClass 枚举类
     * @param value     枚举值
     * @param <E>       e
     * @return 枚举描述
     */
    static <E extends Enum<?> & BaseEnum> String getDescByValue(Class<E> enumClass, Integer value) {
        if (!Objects.isNull(value)) {
            E enumObj = BaseEnum.getEnumByValue(enumClass, value);
            if (enumObj == null) {
                return "";
            } else {
                return enumObj.getDesc();
            }
        }
        return "";
    }
}
